System and method for collaborative development environments

ABSTRACT

A method and system for collaborative development environments allows members of a team which are physically separated to effectively work together. A Collaborative Development Environment (CDE) as a virtual space wherein all the stakeholders of a project—even if distributed by time or distance—may negotiate, brainstorm, discuss, share knowledge, and generally labor together to carry out some task, most often to create an executable deliverable and its supporting artifacts. The CDE allows people to interact with each other without shifting applications or transitioning to a different user interface, and the CDE encourages solving problems as they arise rather than waiting until the problem grows. The CDE may encompass a large variety of resources that range from role players and information items to tasks and development artifacts, but only those resources are relevant to a user&#39;s task at hand are presented.

CROSS REFERENCE TO RELATED APPLICATION

This invention is related to the invention disclosed in copending patentapplication Ser. No. 10/______ filed Sep. 15, 2003, by Nitin Nayak,Fenno F. Heath III, Jenny S. Li, Hui Lei, Mitchell A. Cohen, RakeshMohan, Josef Schiefer, Stephen V. Stibler, Chung Sheng Li, and MarounTouma for “A Method and System for Providing a Common CollaborationFramework Accessible from Within Multiple Applications” (IBM DocketYOR920030243US1), and assigned to a common assignee herewith. Thedisclosure of application Ser. No. 10/______ is incorporated herein byreference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention generally relates to collaborative data processingsystems and, more particularly, to a method and system for collaborativedevelopment environments which allow members of a team which arephysically separated to effectively work together.

2. Background Description

Collaboration is essential to every engineering domain. In the domain ofsoftware development, for example, software engineers on a project teammust be able to effectively plan, share, clarify, negotiate, brainstorm,coordinate, build, and exchange information. Collaboration is even moreimportant when the project team is physically distributed, which hasbecome commonplace due to outsourcing, integration of third partysoftware, increasing off-shore development, use of home offices, andstrategic partnerships among companies, etc. The success of distributedteams working together effectively is imperative and is a distinguishingfactor in the success or failure of many organizations.

Traditionally, most companies have engaged in people-to-peoplecollaboration using technologies such as telephones, facsimile machines,electronic mail (e-mail), and in-person meetings. The last few yearshave seen the growth of collaboration technologies that leverage thepower of the Internet. Such collaboration technologies, includinginstant messaging, electronic meetings (e-meetings), and team rooms,have been available primarily as standalone and general-purpose systems.There is no connection between the collaboration tools and developmenttools and environments. Developers have to manually switch betweencollaboration tools and development environments and are burdened to setup team rooms and meetings and to figure out the people with whom theyneed to interact.

SUMMARY OF THE INVENTION

It is therefore an object of the present invention to provide aCollaborative Development Environment (CDE) as a virtual space whereinall the stakeholders of a project—even if distributed by time ordistance—may negotiate, brainstorm, discuss, share knowledge, andgenerally labor together to carry out some task, most often to create anexecutable deliverable and its supporting artifacts.

Through its emphasis on seamless integration of collaborative featuresinto the environment, the CDE allows people to interact with each otherwithout shifting applications or transitioning to a different userinterface. Further, the CDE encourages solving problems as they ariserather than waiting until the problem grows. It has the potential toyield a more productive, more satisfying development practice.

The CDE may encompass a large variety of resources that range from roleplayers and information items to tasks and development artifacts. Thecombination of all these resources may be too voluminous for a human tokeep track of. Further, not all resources are relevant to a user's taskat hand. There is a need to associate resources with the applicablebusiness context and model the interrelationships between resources.This way, the user is exposed to the relevant resources only, and isable to navigate between related resources. This effectively reduces thedemand for human attention.

According to the invention, there is provided a method to build CDEs,based on explicit modeling of contexts and “CollabSpaces”. A contextrefers to the interrelated aspects of a business solution, within whichcollaboration may occur. A CollabSpace encapsulates the collection ofcollaboration of all resources and displays only those resourcesrelevant to the current context of the user's development environmentbased on the role the user plays in the business process. Specifically,a collaboration space contains one or more collaboration elements thathave potentially different collaboration modalities in association witha business context; e.g., role players, discussion threads, e-meetings,annotated documents, etc. The collaboration modalities refers todistinct collaboration capabilities provided by a specific technology,such as an e-meeting, discussion threads, instant messaging chattranscripts, online presence awareness (“buddy” lists), annotations,team rooms, etc. It provides a common substrate for members of a projectteam that use distinct development environments, each instrumented witha viewer to the CollabSpace. Further, the viewer presents a personalizedview to different team members that is adapted to the members' currenttasks and needs.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, aspects and advantages will be betterunderstood from the following detailed description of a preferredembodiment of the invention with reference to the drawings, in which:

FIG. 1 is a block diagram illustrating the architecture of thecontextual collaboration in a team environment according to theinvention;

FIG. 2 is a screen print showing a preferred form of the collaborationplugin graphical user interface;

FIG. 2A is a screen print showing the pull-down menu which allowsselection of the Manage Collab Space option; and

FIG. 3 is a flow diagram of the process implemented for thecollaborative development environment.

DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT OF THE INVENTION

To create a Collaborative Development Environment, a virtual space whereall stakeholders of a project can communicate both synchronously andasynchronously in a manner sensitive to the business context and usercontext, it is important to enable contextual collaboration within eachteam member's development environment.

Referring now to the drawings, and more particularly to FIG. 1, there isshown the architecture of the contextual collaboration in a teamenvironment according to the invention. In this example, there are threeuser Integrated Development Environment (IDEs) 11, 12 and 13, but itwill be understood that the number of IDEs is solely dependent on thenumber of members of a particular team. An IDE is a software thatprovides users with a development environment that usually consists of atext editor, a compiler, an interpreter, some build automation tools, adebugger, and common version control system and optionally a graphicaluser interface (GUI) construction tool. The IDEs 11, 12 and 13 eachcomprise a number of plugins, including a Collaboration Plugin that addscollaborative capabilities (such as instant messaging, discussionthreads, etc.) to allow the user to communicate with the stakeholdersand gain access to resources of the projects he or she is working onwithout leaving his or her development environment or switching to adifferent collaboration application. The Collaboration Plugin includes amonitor, a viewer and user control, described in more detail withreference to FIGS. 2 and 2A.

In a team environment, it is very common that each team member has anIDE setup in his or her own workstation and each workstation isconnected to a network. To facilitate the collaborative capabilitieswithin a development, it is necessary to integrate collaboration toolswith development tools through people collaboration activities. This isaccomplished by means of the collaboration manager (CollabManager) 14and the context manager (ContextManager) 15, details of which areprovided in co-pending application Ser. No. 10/______. In this case, aCollaboration Plugin can be added to each member's IDE to facilitatecommunication among the team. The Collaboration Plugin allows users toconnect to a ContextManager and CollabManager that hooks to any backendcollaboration servers to provide users with collaboration capabilities.The ContextManager 15 manages contexts. Contexts are mechanisms to scoperesource relationships, including relationships between collaborationelements and business operational artifacts. Resources and theirinterrelationships are specified with respect to a particular context.ContextManager 15 allows contexts to be created and further allowsresources and relationships to be added to and removed from a contextand, using an ontology engine, it answers queries about contextualrelationships. On the other hand, CollabManager 14 facilitates theconnections between the applications or development environments to thecollaboration spaces and collaboration modalities. A collaboration spaceis a container of collaboration artifacts, including roles, members,collaborative activities, ad hoc modalities, and collaboration content.It is a mechanism for integrating disparate collaboration capabilities.CollabManager 14 provides the function of lifecycle management forcollaboration spaces and directs modality-specific operations toexternal collaboration servers. The CollabManager 14, in this example,is connected to a Collaboration Plugin on each team member's IDE (threemembers total in this illustrative example) and the backendcollaboration servers that include an instant messaging server 16, ateam room server 17, and an e-meeting server 18.

In a CDE, a user is exposed to resources that store in a CollabSpacethat are related to his or her context in the user's developmentenvironment based on the user's role. This is accomplished by means ofthe collaboration manager (“CollabManager”) 14 and the context manager(“ContextManager”) 15 (details of which again are provided inapplication Ser. No. 10/______). The ContextManger 15 manages therelationship between resources while CollabManager 14 facilitates theconnection between the application or development environments to thecollaboration spaces and collaboration modalities. The latter include,in this example, an instant messaging server 16, a team room server 17and an e-meeting server 18.

Whenever the user's context changes, the appropriate resources will beshown automatically if the user wishes. The filtering of the rightresources is a time saving advantage for the user since the user doesnot need to manually keep track of who or what is related to his currentcontext, in particular, people interaction and effectiveness of teamworkare improved.

The integration of collaborative features within a business or withindevelopment applications and processes could be easier if there is arapid development and deployment framework. The contextual collaborationframework according to the invention provides an on-demand add-on to anydevelopment environment. This leverages the plugin technology so thatcollaborative features are loosely coupled into the developmentenvironments upon business needs. It is also adaptive enough to exposethe appropriate set of business artifacts to the user based on his rolein the business process while this is integrated.

In a team environment, a team of developers, project manager,architects, testers and others may work together. Each may have theirown development environment on different machines. Sometimes, projectmanagers may use a different application to handle his work or tasksthan the developers. In order for the team to collaborate with eachother efficiently without switching to a separate collaboration tool,the Collaboration Plugin integrates a set of user controls, a viewer anda monitor in the development environment to allow both synchronous andasynchronous people collaboration to take place within the user'sdevelopment tool. The user is able to see who is online, what resourcesare related to the current project the user is working on, whatdiscussion topics are there, what e-meetings are available and so forth.FIG. 1 illustrates how the architecture of the Collaboration Pluginworks in a team environment. Essentially, the Collaboration Plugin ineach of IDEs 11, 12 and 13 is added to each team member's developmentenvironment, each Collaboration Plugin is able to talk to a commonContextManager 15 to bring the appropriate set of resources to theusers, and a common CollabManager 14 to enable the people collaborationvia instant messaging, team room, e-meetings, etc. Since theContextManager 15 has the intelligence to bring the right resources thatare related to the user's current working set, a user can collaboratewith others without going through any hassle of starting anothercollaboration tool.

FIG. 2 is a screen print showing the Collaboration Plugin Graphical UserInterface (GUI). This interface includes a Viewer 21 and User Control22. The Viewer 21 is a graphic user interface component that can beadded to a user's existing development environment to show the contentof a selected CollabSpace. An example of content could be role players,discussion threads, e-meetings links, members online status, etc.Through the Viewer 21, the user is able to access the CollabSpace thatis associated with the current context the user is working on, and startcollaboration or interaction with fellow teammates.

User Controls 22 is a set of collaborative actions in a drop down menuformat that the user could choose to perform within his or herdevelopment environment. Collaborative actions could be manage/openCollabSpace, associate with context or enable/disable contextsensitivity for the collaboration Viewer 21. The collaboration Viewer 21shows the appropriate content of the specific CollabSpace related to thecurrent context of the user's development environment based on the rolehe or she plays in the business process. The context of the user'sdevelopment environment could be a project, a subject or any logicalgrouping he chooses to use to categorize his work. Granularity of thecontext could differ from individual to individual. The associationbetween the current context of the user's development environment and aspecific CollabSpace is discussed below in the “Associate with Context”user control. FIG. 2A shows a similar screen print which illustrates thepull-down menu displayed by selecting the “Run” command from the commandbar. One of the options provided to the user is “Manager Collab Space”.

To demonstrate how collaboration capabilities are enabled within thedevelopment environment, the following scenario is used. Consider aproject as a form of context. UserA is currently working on ProjectA inhis development environment like he usually does. Collaboration has notbeen started yet. To initiate interaction with his team members who workon the same project, he could perform the following user controls:

-   -   “Manage CollabSpace” user control—By choosing this control, he        could further select to create a new CollabSpace. Upon the        creation, he could either create a CollabSpace with for a new        context or any existing context on the collaboration server. In        this way, contexts could be associated in a hierarchical or        parent and child manner. Assume CollabSpaceA is successfully        created for the context his picked, he could add/edit/delete        members and assign specific role to each for this CollabSpace.    -   “Associate with context” user control—By choosing this control,        he could associate his current context that is working on, in        this case ProjectA, to the context he picked for CollabSpaceA he        just created. With this association, his current project,        ProjectA, is associated with the context that CollabSpaceA is        associated with. By the fact of transitivity, ProjectA is now        related to CollabSpaceA.    -   “Enable Context Sensitive View” user control—When a user chooses        this action, the Viewer 21 is now context sensitive. That is to        say, the content displayed in the Viewer 21 is relevant to the        current context the user is working on based on his role. In our        example, UserA can see CollabSpaceA with relevant resources        whenever he works on ProjectA.    -   “Disable Context Sensitive View” user control—A user can choose        to disable the context sensitivity of the View if he choose this        user control. The Viewer 21 will no longer be sensitive to the        context he is working on. That is to say, a switch in context,        for example from ProjectA to ProjectB, will not trigger the        Viewer 21 to display relevant resources of the new context.    -   “Open CollabSpace” user control—A user can choose to manually        open a CollabSpace if he wishes. Since the Viewer is now        displaying a CollabSpace with resources that may or may not be        relevant to the current context, the context sensitivity of the        Viewer is disabled by this action.

The Monitor is a middleman behind the screen that listens to the actionsof the user in his development environment and interfaces withCollabManager 14, ContextManager 15 and the Viewer 21 if the actions ofthe user are significant enough to change the current set of resourcesbeing CollabManager 14, ContextManager 15 and the Viewer 21 if theactions of the user are significant enough to change the current set ofresources being displayed in the Viewer 21 if the user has enabledcontext sensitivity for the Viewer as mentioned above.

FIG. 3 depicts the flow of the Collaboration Plugin when contextsensitivity of the Viewer 21 is enabled by user control. The Monitoralways listens to the user's action, as indicated by function block 31.An example of action can be editing a file, expanding a directory,selecting a pull-down menu user control, etc. Based on the action of theuser, the Monitor then determines in function block 32 the contextassociated with the action. In our example, UserA has two contexts:ProjectA and ProjectB, in his development environment. Both projectscontain programming files and design documents. Say, UserA selects adesign document to edit, the Monitor detects this action and finds thedocument is associated with ProjectB, i.e., the context. Since theMonitor keeps track of the current context information, it determines indecision block 33 if the user is switching to a new context by editing afile of ProjectB. In this case, assuming the user was working onProjectA before, his new action has shown a change in context. TheMonitor then sends a message to the ContextManager 15 in function block34 and asks it to update the current context of the user to be ProjectBinstead. ContextManager 15, in return, acknowledges the Monitor andreports of the resources that are associated with the new context. Sinceresources could differ from one context to another, the Monitor needs toinform CollabManager 14 in function block 35 to display the relevantresources of CollabSpace in the Viewer 21. Depending on the magnitude ofthe change in context, the Viewer 21 may display different resourcesfrom the same CollabSpace or resources from another CollabSpace infunction block 36. The Monitor continues to capture the next useraction, performs the same decision making procedures and

While the invention has been described in terms of a single preferredembodiment, those skilled in the art will recognize that the inventioncan be practiced with modification within the spirit and scope of theappended claims.

1. A system implementing a collaborative development environment among ateam of developers, comprising: a monitor that captures user andenvironment events; a context manager that maintains relationships andresources within contexts; and a viewer that presents collaborationelements based on a current developer context.
 2. The system in claim 1,wherein the monitor and the viewer comprise a collaborative plugin to anintegrated development environment that provides a user with tools foruse in the development environment, there being a collaborative pluginfor each user workstation.
 3. The system in claim 2, wherein thecollaborative plugin further comprises a user interface componentadapted to define contexts and collaboration spaces.
 4. The system inclaim 1, wherein the context manager allows a context to be created,allows resources and relationships to be added to and removed from acontext, and answers queries about contextual relationships.
 5. Thesystem in claim 2, further comprising a collaboration managerinterfacing with collaborative plugins in a plurality of workstations tofacilitate connection between application or development environments tocollaboration spaces and collaboration modalities.
 6. The system inclaim 5, wherein the collaboration modalities include an instantmessaging server, a team room server and an e-meeting server.
 7. Thesystem in claim 1, further comprising a collaboration manager thatprovides life cycle management functions of the collaboration spaces. 8.A computer implemented method to support collaborative development amonga team of developers, comprising the steps of: capturing user anddevelopment environments; maintaining relationships and resources withincontexts; and presenting collaboration elements based on a currentdeveloper context.
 9. The method in claim 8, further comprising the stepof defining contexts and collaboration spaces.
 10. The method in claim8, wherein the steps of capturing and presenting are implemented by acollaborative plugin to an integrated development environment thatprovides a user with tools for use in the development environment, therebeing a collaborative plugin for each user workstation.
 11. The methodin claim 10, wherein the collaborative plugin further implements a userinterface defining contexts and collaboration spaces.
 12. The method inclaim 8, wherein the step of maintaining relationships and resourceswithin contexts includes the steps of creating a context, adding to andremoving from a context resources and relationships, and answeringqueries about contextual relationships.
 13. The method in claim 8,further comprising the step of facilitating connection betweenapplication or development environments to collaboration spaces andcollaboration modalities.
 14. The method in claim 9, further comprisingthe step of managing the life cycle of collaboration spaces.